import java.util.*;
import java.text.*;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@interface StringValue {
    String str();
}

@Retention(RetentionPolicy.RUNTIME)
@interface Description {
    String description();
}

@Description (description = "The class Manager is derived from the class Employee.")
@StringValue (str = "Class leve l Annotation demo.")
public class Manager extends Employee {
    double allowance;
    public Manager(double allowance) {
        this.allowance = allowance;
    }
    
    public Manager(String n, Date b, double s, String d, double a) {
        this.name = n;
        this.dateOfBirth = b;
        this.currentSalary = s;
        this.designation = d;
        this.allowance = a;
    }
    
    public Manager(String n, int y, int m, int d, double s, String des, double a) {
        GregorianCalendar cl = new GregorianCalendar(y, m, d);
        this.name = n;
        this.dateOfBirth = cl.getTime();
        this.currentSalary = s;
        this.designation = des;
        this.allowance = a;
    }
    
    @Override
    public void showEmployeeDetails() {
        SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        System.out.format("%1$-20s %2$12s %3$10.2f %4$-20s\n",
                name,
                df.format(dateOfBirth),
                currentSalary + allowance,
                designation);
    }
}
